var RaiSpriteLoader = {

    spriteCache: [],

    load: function(spriteName, callback){
        //先从缓存中找图片
        if(RaiSpriteLoader.spriteCache.hasOwnProperty(spriteName))
        {
            cc.log('缓存 spriteName:'+spriteName);
            callback(RaiSpriteLoader.spriteCache[spriteName]);
            return;
        }
        cc.log('加载 spriteName:'+spriteName);
        //缓存中找不到时依次从图集中找
        if(cc.Tex1 == null)
        {
            //加载图集1
            cc.loader.loadRes('Texture/Tex1', cc.SpriteAtlas,(err,atlas)=>{
                cc.Tex1 = atlas;
                let sprite = cc.Tex1.getSpriteFrame(spriteName);
                if(sprite != null)
                {
                    RaiSpriteLoader.spriteCache[spriteName] = sprite;
                    callback(sprite);
                    return;
                }
                //加载图集2
                if(cc.Tex2 == null)
                {
                    cc.loader.loadRes('Texture/Tex2', cc.SpriteAtlas,(err, atlas)=>{
                        cc.Tex2 = atlas;
                        if(err == null && cc.Tex2.getSpriteFrame)
                        {
                            let sprite = cc.Tex2.getSpriteFrame(spriteName);
                            if(sprite != null)
                            {
                                RaiSpriteLoader.spriteCache[spriteName] = sprite;
                                callback(sprite);
                                return;
                            }
                        }
                        //图集中也没有 就直接加载图片
                        cc.loader.loadRes("Texture/" + spriteName, cc.SpriteFrame, function (err, spriteFrame) {
                            if(err != null)
                            {
                                callback(null);
                                return;
                            }
                            let sprite = spriteFrame;
                            RaiSpriteLoader.spriteCache[spriteName] = sprite;
                            callback(sprite);
                            return;
                        });
                    });
                }else{
                    if(cc.Tex2.getSpriteFrame)
                    {
                        let sprite = cc.Tex2.getSpriteFrame(spriteName);
                        if(sprite != null)
                        {
                            RaiSpriteLoader.spriteCache[spriteName] = sprite;
                            callback(sprite);
                            return;
                        }
                    }
                    //图集中也没有 就直接加载图片
                    cc.loader.loadRes("Texture/" + spriteName, cc.SpriteFrame, function (err, spriteFrame) {
                        if(err != null)
                        {
                            callback(null);
                            return;
                        }
                        let sprite = spriteFrame;
                        RaiSpriteLoader.spriteCache[spriteName] = sprite;
                        callback(sprite);
                        return;
                    });
                }
            });
        }else{
            let sprite = cc.Tex1.getSpriteFrame(spriteName);
            if(sprite != null)
            {
                RaiSpriteLoader.spriteCache[spriteName] = sprite;
                callback(sprite);
                return;
            }
            //加载图集2
            if(cc.Tex2 == null)
            {
                cc.loader.loadRes('Texture/Tex2', cc.SpriteAtlas,(err, atlas)=>{
                    cc.Tex2 = atlas;
                    if(err == null)
                    {
                        let sprite = cc.Tex2.getSpriteFrame(spriteName);
                        if(sprite != null)
                        {
                            RaiSpriteLoader.spriteCache[spriteName] = sprite;
                            callback(sprite);
                            return;
                        }
                    }
                    //图集中也没有 就直接加载图片
                    cc.loader.loadRes("Texture/" + spriteName, cc.SpriteFrame, function (err, spriteFrame) {
                        if(err != null)
                        {
                            callback(null);
                            return;
                        }
                        let sprite = spriteFrame;
                        RaiSpriteLoader.spriteCache[spriteName] = sprite;
                        callback(sprite);
                        return;
                    });
                });
            }else{
                if(cc.Tex2.getSpriteFrame)
                {
                    let sprite = cc.Tex2.getSpriteFrame(spriteName);
                    if(sprite != null)
                    {
                        RaiSpriteLoader.spriteCache[spriteName] = sprite;
                        callback(sprite);
                        return;
                    }
                }
                //图集中也没有 就直接加载图片
                cc.loader.loadRes("Texture/" + spriteName, cc.SpriteFrame, function (err, spriteFrame) {
                    if(err != null)
                    {
                        callback(null);
                        return;
                    }
                    let sprite = spriteFrame;
                    RaiSpriteLoader.spriteCache[spriteName] = sprite;
                    callback(sprite);
                    return;
                });
            }
        }
    }
};

module.exports = RaiSpriteLoader;